package com.aaa.ssm.service.impl;

import com.aaa.ssm.dao.ScenicDao;
import com.aaa.ssm.dao.TmScenicDao;
import com.aaa.ssm.entity.Scenic;
import com.aaa.ssm.entity.TmScenic;
import com.aaa.ssm.service.ScenicService;
import com.aaa.ssm.service.TmScenicService;
import com.aaa.ssm.util.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * ProjectName ssm_elementUI_axios_test_20230323
 * Date 2023/03/23 下午 06:50
 * Version 1.0.0
 * Description
 */
@Service
public class ScenicServiceImpl implements ScenicService {
    @Resource
    private ScenicDao scenicDao;
    @Resource
    private TmScenicService tmScenicService;
    @Resource
    private TmScenicDao tmScenicDao;
    @Resource
    private HttpSession session;

    /**
     * 分装格式化时间类
     * @return
     */
    private static String time(){
        //获取当前时间
        Date date = new Date();
        //实例化格式化时间类
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //format格式化时间
        String format = simpleDateFormat.format(date);
        return format;
    }

    public PageInfo queryPage(Page<Scenic> page) {
        PageHelper.startPage(page.getPageNo(), page.getPageSize());
        return new PageInfo(scenicDao.queryByParam(page.getData()));
    }

    public List<Scenic> queryById(int id) {
        List<Scenic> scenicList = scenicDao.queryById(id);

        if (scenicList == null) {
//            if (scenicList.get(0).getTicketList().get(0).getPtype().equals("1")){
//                scenicList.get(0).getTicketList().get(0).getPtype()= "微信支付";
//            }else{
//                scenicList.get(0).getTicketList().get(0).getPtype()= "景区内支付";
//            }
            return null;
        }
        return scenicList;
    }


    /**
     * 景区添加
     * 事务问题：
     *   数据库事务概念：保证一个单元操作中所有步骤一起提交或者一起回滚
     *     4个特性： ACID 原子性 一致性 隔离性 持久性
 *         spring对数据库事务进行支持：
     *     两种方式
     *
     * @param scenic 对象
     * @return
     */
    @Transactional
    public int add(Scenic scenic) {
        //获取设置的loginA值 并进行转换
        String loginA = (String) session.getAttribute("loginA");
        //设置不上线
        scenic.setIsline(0);
        scenic.setIstodayshow(0);
        scenic.setSnums(0);
        scenic.setOnums(0);
        //主键返回
        int add = scenicDao.add(scenic);
        //封装参数到审核
        TmScenic tmScenic = new TmScenic();
        tmScenic.setScenicid(scenic.getCode());
        tmScenic.setCode(scenic.getCode());
        tmScenic.setName(scenic.getName());
        tmScenic.setScover(scenic.getScover());
        tmScenic.setThemecode(scenic.getThemecode());
        tmScenic.setSeasoncode(scenic.getSeasoncode());
        tmScenic.setJbcode(scenic.getJbcode());
        tmScenic.setYytime(scenic.getYytime());
        tmScenic.setAreacode(scenic.getAreacode());
        tmScenic.setSaddress(scenic.getSaddress());
        tmScenic.setTaddress(scenic.getTaddress());
        tmScenic.setLat(scenic.getLat());
        tmScenic.setLng(scenic.getLng());
        tmScenic.setMobile(scenic.getMobile());
        tmScenic.setPhone(scenic.getPhone());
        tmScenic.setSnav(scenic.getSnav());
        tmScenic.setSummary(scenic.getSummary());
        tmScenic.setSintroduction(scenic.getSintroduction());
        tmScenic.setStraffic(scenic.getStraffic());
        tmScenic.setSnotice(scenic.getSnotice());
        tmScenic.setSprotocol(scenic.getSprotocol());
        tmScenic.setIsline(scenic.getIsline());
        tmScenic.setWeight(scenic.getWeight());
        tmScenic.setIstodayshow(scenic.getIstodayshow());
        tmScenic.setOprice(scenic.getOprice());
        tmScenic.setDprice(scenic.getDprice());
        tmScenic.setSnums(scenic.getSnums());
        tmScenic.setOnums(scenic.getOnums());
        tmScenic.setSmap(scenic.getSmap());
        tmScenic.setBgrid(loginA);///添加人
        tmScenic.setBgtime(time());//添加时间
        tmScenic.setIshistory("2");//历史版本默认为2
        tmScenic.setDelstate("1"); //默认未删除
        tmScenic.setShstate("-1"); //状态代审核
        int add1 = tmScenicService.add(tmScenic);
        return add;
    }

    public int update(Scenic scenic) {
        scenic.setOnums(0);
        scenic.setSnums(0);
        return scenicDao.update(scenic);
    }

    public int deleteById(Integer id) {
        //获取设置的loginA值 并进行转换
        String loginA = (String) session.getAttribute("loginA");
        TmScenic tmScenic = new TmScenic();
        tmScenic.setDelrid(loginA);//删除人
        tmScenic.setDeltime(time());//删除时间
        tmScenic.setDelstate("0");//状态已删除
        tmScenicDao.update(tmScenic);//调用修改方法
        return scenicDao.deleteById(id);
    }
    /**
     * 安类别
     * @param page
     * @return
     */
    @Override
    public PageInfo recommendShow(Page<Scenic> page) {
        //设置页码和每页信息显示数量
        PageHelper.startPage(page.getPageNo(),page.getPageSize());
        //实例化PageInfo 把查询寻结果作为参数放入里面
        PageInfo pageInfo = new PageInfo(scenicDao.recommendShow(page.getData()));
        return pageInfo;
    }

    /**
     * 按价钱
     * @param page
     * @return
     */
    @Override
    public PageInfo priceShow(Page<Scenic> page) {
        //设置页码和每页信息显示数量
        PageHelper.startPage(page.getPageNo(),page.getPageSize());
        //实例化PageInfo 把查询寻结果作为参数放入里面
        PageInfo pageInfo = new PageInfo(scenicDao.priceShow(page.getData()));
        return pageInfo;
    }

    /**
     * 查询所有景区
     * @return
     */
    @Override
    public List<Scenic> queryAll() {
        return scenicDao.queryAll();
    }

}